import pandas as pd
import re

def standardize_hotel_name(name):
    # 保留括号内容，只删除括号，并处理多余空格
    # 先处理中文括号
    name = re.sub(r'（(.*?)）', r'\1', name)
    # 再处理英文括号
    name = re.sub(r'\((.*?)\)', r'\1', name)
    # 处理多余空格
    return ' '.join(name.split())

def merge_hotel_data():
    # 读取三个CSV文件
    df_ly = pd.read_csv('other/hotels_data_ly.csv')
    df_ctrip = pd.read_csv('other/hotels_data_ctrip.csv')
    df_fliggy = pd.read_csv('other/hotels_data_fliggy.csv')

    # 标准化酒店名称
    df_ly['name'] = df_ly['name'].apply(standardize_hotel_name)
    df_ctrip['name'] = df_ctrip['name'].apply(standardize_hotel_name)
    df_fliggy['name'] = df_fliggy['name'].apply(standardize_hotel_name)

    # 为每个平台的列名添加后缀
    df_ly = df_ly.add_suffix('_ly')
    df_ctrip = df_ctrip.add_suffix('_ctrip')
    df_fliggy = df_fliggy.add_suffix('_fliggy')

    # 将name列名改回原样，以便合并
    df_ly = df_ly.rename(columns={'name_ly': 'name'})
    df_ctrip = df_ctrip.rename(columns={'name_ctrip': 'name'})
    df_fliggy = df_fliggy.rename(columns={'name_fliggy': 'name'})

    # 使用外连接合并所有数据框
    merged_df = df_ly.merge(df_ctrip, on='name', how='outer').merge(df_fliggy, on='name', how='outer')

    # 重新排序列名，确保name在第一位
    cols = ['name'] + [col for col in merged_df.columns if col != 'name']
    merged_df = merged_df[cols]

    # 保存合并后的数据
    merged_df.to_csv('other/hotels_data_merged.csv', index=False, encoding='utf-8-sig')
    print(f"合并完成，共有 {len(merged_df)} 条酒店数据")

if __name__ == "__main__":
    merge_hotel_data()